import random

class DarCartas:
	usada=[]
	def __init__(self):
		self.__usada=[]
		self.DarCartas=[[1,2,3,4,5,6,7,10,11,12],["Basto", "Espada","Copa","Oro"]]
		self.cartas=[]
	def getcartas(self):
		self.carta1=[self.DarCartas[0][0],self.DarCartas[1][0]]
		self.carta2=[self.DarCartas[0][0],self.DarCartas[1][0]]
		self.carta3=[self.DarCartas[0][0],self.DarCartas[1][0]]
		while not (self.carta1!=self.carta2 and self.carta1!=self.carta3 and self.carta2!=self.carta3):
			self.carta1=[self.DarCartas[0][random.randrange(10)],self.DarCartas[1][random.randrange(4)]]
			self.carta2=[self.DarCartas[0][random.randrange(10)],self.DarCartas[1][random.randrange(4)]]
			self.carta3=[self.DarCartas[0][random.randrange(10)],self.DarCartas[1][random.randrange(4)]]

		self.l=[]
		if self.carta1 in self.__class__.usada :
			while not (self.carta1 in self.cartas and not self.carta1 in self.__class__.usada):
				self.l=[self.DarCartas[0][random.randrange(10)],self.DarCartas[1][random.randrange(4)]]
				if self.l!=self.carta2 and self.l!=self.carta3:
					self.carta1=self.l
				break
		if self.carta2 in self.__class__.usada :
			while not (self.carta2 in self.cartas and not self.carta2 in self.__class__.usada):
				self.l=[self.DarCartas[0][random.randrange(10)],self.DarCartas[1][random.randrange(4)]]
				if self.l!=self.carta1 and self.l!=self.carta3:
					self.carta2=self.l
				break	
		if self.carta3 in self.__class__.usada:
			while not (self.carta3 in self.cartas and not self.carta3 in self.__class__.usada):
				self.l=[self.DarCartas[0][random.randrange(10)],self.DarCartas[1][random.randrange(4)]]
				if self.l!=self.carta2 and self.l!=self.carta1:
					self.carta3=self.l
				break
		self.__class__.usada.append(self.carta1);self.__class__.usada.append(self.carta2);self.__class__.usada.append(self.carta3)
		if len (self.cartas)<3:
			self.cartas.append(self.carta1);self.cartas.append(self.carta2);self.cartas.append(self.carta3); 
		return self.cartas
		

class Puntuacion:
	def __init__(self):
		self.__Truco=[[[1,"Espada"]],[[1,"Basto"]],[[7,"Espada"]],[[7,"Oro"]],[[3,"Todos"]],[[2,"Todos"]],[[1,"Oro"],[1,"Copa"]],[[12,"Todos"]],[[11,"Todos"]],[[10,"Todos"]],[[7,"Copa"],[7,"Basto"]],[[6,"Todos"]],[[5,"Todos"]],[[4,"Todos"]]]
	def getmayortruco(self,lista1,lista2):
		x1=self.__getmayortruco(lista1)
		x2=self.__getmayortruco(lista2)
		carta1=self.__Truco[x1[0]][x1[1]]
		carta2=self.__Truco[x2[0]][x2[1]]
		valores=(carta1>carta2);valor=(carta1==carta2);valu=(carta1<carta2)
		print "carta 1", lista1
		print "carta 2", lista2
		if valores==True:
			return 1, "punto jugador 1"
		elif valu==True:
			return 1, "punto jugador 2"
		else:
			return "Sin puntos"	
		
	def __getmayortruco(self,lista1):
		n=0	
		t=0
		for cart in self.__Truco:	
			largo=len(cart)
			for numero in range(largo):
				if cart[numero][0]==lista1[0] and cart[numero][1]=="Todos":
					t=n*1
					j=0
					break
				elif lista1[0]==1 and lista1[1]=="Espada":	
					t=0
					j=0
				elif lista1[0]==1 and lista1[1]=="Basto":	
					t=1
					j=0
				elif lista1[0]==7 and lista1[1]=="Espada":	
					t=2
					j=0
				elif lista1[0]==7 and lista1[1]=="Oro":	
					t=3
					j=0
				elif (lista1[0]==1 and lista1[1]=="Copa") or (lista1[0]==1 and lista1[1]=="Oro"):	
					t=6
					if (lista1[0]==1 and lista1[1]=="Copa"):
						j=1
					else:
						j=0
				elif (lista1[0]==7 and lista1[1]=="Copa")or(lista1[0]==7 and lista1[1]=="Basto"):	
					t=10
					if (lista1[0]==7 and lista1[1]=="Copa"):
						j=0
					else:
						j=1	
								
			n=n+1				
		return [t,j]
				




n=DarCartas()
cartas1=n.getcartas()
print "jugador 1", cartas1

m=DarCartas()
cartas2=m.getcartas()
print "jugador 2",cartas2

eleccion1= input ("seleccione la primera carta para tirar jugador 1 (1,2,3): ")
while not ((eleccion1==1) or (eleccion1==2) or (eleccion1==3)):
	eleccion1= input ("seleccione la primera carta para tirar jugador 1 (1,2,3): ")
eleccion1=eleccion1-1;	
eleccion2= input ("seleccione la primera carta para tirar jugador 2 (1,2,3): ")
while not ((eleccion2==1) or (eleccion2==2) or (eleccion2==3)):
	eleccion2= input ("seleccione la primera carta para tirar jugador 2 (1,2,3): ")
eleccion2=eleccion2-1;
el1=n.getcartas()[eleccion1]
el2=m.getcartas()[eleccion2]

p=Puntuacion()
print p.getmayortruco(el1,el2)

cartas1.remove(el1)
cartas2.remove(el2)

print cartas1
print cartas2

elec1= input ("seleccione la primera carta para tirar jugador 1 (1,2): ")
while ((elec1==1) or (elec1==2))and elec1==eleccion1:
	elec1= input ("seleccione la primera carta para tirar jugador 1 (1,2): ")
elec1=elec1-1;
	
elec2= input ("seleccione la primera carta para tirar jugador 2 (1,2): ")
while ((elec2==1) or (elec2==2))and elec2==eleccion2:
	elec1= input ("seleccione la primera carta para tirar jugador 2 (1,2): ")
elec2=elec2-1;

ju1=n.getcartas()[elec1]
ju2=m.getcartas()[elec2]

p=Puntuacion()
print p.getmayortruco(ju1,ju2)


